package org.chen.common.scene.dto.api;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;

@Data
public class CtripApiResponse {
    private Long districtId;
    private Long geoCityId;
    private String districtName;
    private String districtEName;
    private Boolean hasMore;
    private Integer totalCount;
    private String totalCountDesc;
    private List<AttractionItem> attractionList;
    private List<SortType> sortTypeList;
    private Filters filters;

    @Data
    public static class AttractionItem {
        private Integer showType;
        private Card card;

        @Data
        public static class Card {
            private Long poiId;
            private Long businessId;
            private String poiName;
            private Integer commentCount;
            private BigDecimal commentScore;
            private Boolean isAdvertisement;
            private Long districtId;
            private String districtName;
            private String sightLevelStr;
            private String coverImageUrl;
            private String dynamicCoverImageUrl;
            private String distanceStr;
            private List<String> tagNameList;
            private List<OtherTag> otherTagList;
            private Integer poiType;
            private String detailUrl;
            private String displayField;
            private BigDecimal marketPrice;
            private BigDecimal price;
            private String priceType;
            private String priceTypeDesc;
            private Boolean isFree;
            private List<String> shortFeatures;
            private String sightCategoryInfo;
            private String categoryType;
            private Boolean hasVideo;
            private Coordinate coordinate;
            private String heatScore;
            private Long timestamp;

            @Data
            public static class OtherTag {
                private String type;
                private String name;
                private String code;
            }

            @Data
            public static class Coordinate {
                private String coordinateType;
                private BigDecimal latitude;
                private BigDecimal longitude;
            }
        }
    }

    @Data
    public static class SortType {
        private Integer id;
        private String name;
        private String desc;
    }

    @Data
    public static class Filters {
        private List<FilterGroup> attractionTypeFilter;
        private List<FilterGroup> districtFilter;

        @Data
        public static class FilterGroup {
            private String name;
            private List<FilterDetail> filterDteails;

            @Data
            public static class FilterDetail {
                private String text;
                private String id;
            }
        }
    }
}